from werkzeug import generate_password_hash

from datetime import date

from app import db
from app.models.usuario import Usuario
from app.models.entidad import Entidad
from app.models.permiso import Permiso
from app.models.rol import Rol
from app.models.fase import Fase
from app.models.tipoItem import TipoItem
from app.models.proyecto import Proyecto
from app.models.item import Item
from app.models.atributo import Atributo
from app.models.linea_base import LineaBase
from app.models.historial_lb import HistorialLineaBase
from app.models.solicitud_cambio import SolicitudCambio
from app.models.atributo_item import AtributoItem
from app.models.comite_de_cambio import ComiteDeCambio
from app.models.historial import Historial

print "Cargando datos"

######################################
###### Creacion de entidades##########
######################################
ent1 = Entidad('Proyecto 1')
db.session.add(ent1)
db.session.commit()

ent2 = Entidad('Proyecto 2')
db.session.add(ent2)
db.session.commit()

ent3 = Entidad('Fase 1 Proyecto 1')
db.session.add(ent3)
db.session.commit()

ent4 = Entidad('Fase 1 Proyecto 2')
db.session.add(ent4)
db.session.commit()

ent5 = Entidad('Proyecto 3')
db.session.add(ent5)
db.session.commit()

ent6 = Entidad('Proyecto 6')
db.session.add(ent6)
db.session.commit()

ent7 = Entidad('Fase 2 Proyecto 2')
db.session.add(ent7)
db.session.commit()

ent8 = Entidad('Fase 3 Proyecto 2')
db.session.add(ent8)
db.session.commit()

################################
# Entidad para probar linea base#
################################
ent9 = Entidad('Proyecto 4')
db.session.add(ent9)
db.session.commit()

ent10 = Entidad('Fase 1 Proyecto 4')
db.session.add(ent10)
db.session.commit()

ent11 = Entidad('Fase 2 Proyecto 4')
db.session.add(ent11)
db.session.commit()

ent12 = Entidad('Fase 3 Proyecto 4')
db.session.add(ent12)
db.session.commit()

ent13 = Entidad('Fase 4 Proyecto 4')
db.session.add(ent13)
db.session.commit()

ent14 = Entidad('Fase 1 Proyecto 3')
db.session.add(ent14)
db.session.commit()

ent15 = Entidad('Fase 2 Proyecto 3')
db.session.add(ent15)
db.session.commit()

ent_py = Entidad('Proyecto pyunit')
db.session.add(ent_py)
db.session.commit()

ent_py2 = Entidad('Fase 1 Proyecto pyunit')
db.session.add(ent_py2)
db.session.commit()

ent_py3 = Entidad('Fase 2 Proyecto pyunit')
db.session.add(ent_py3)
db.session.commit()
######################################
## Creacion de permisos por defecto###
######################################
per_1 = Permiso('CREAR_USUARIO', None, None)
db.session.add(per_1)
db.session.commit()

per_2 = Permiso('MODIFICAR_USUARIO', None, None)
db.session.add(per_2)
db.session.commit()

per_3 = Permiso('DESACTIVAR_USUARIO', None, None)
db.session.add(per_3)
db.session.commit()

per_4 = Permiso('VER_USUARIO', None, None)
db.session.add(per_4)
db.session.commit()

per_5 = Permiso('CREAR_ROL', None, None)
db.session.add(per_5)
db.session.commit()

per_6 = Permiso('MODIFICAR_ROL', None, None)
db.session.add(per_6)
db.session.commit()

per_7 = Permiso('ELIMINAR_ROL', None, None)
db.session.add(per_7)
db.session.commit()

per_8 = Permiso('VER_ROL', None, None)
db.session.add(per_8)
db.session.commit()

per_9 = Permiso('CREAR_PERMISO', None, None)
db.session.add(per_9)
db.session.commit()

per_10 = Permiso('ELIMINAR_PERMISO', None, None)
db.session.add(per_10)
db.session.commit()

per_15 = Permiso('ACTIVAR_USUARIO', None, None)
db.session.add(per_15)
db.session.commit()

per_16 = Permiso('ADMINISTRACION_USUARIOS', None, None)
db.session.add(per_16)
db.session.commit()

per_17 = Permiso('ADMINISTRACION_ENTIDADES', None, None)
db.session.add(per_17)
db.session.commit()

per_18 = Permiso('ADMINISTRACION_ROLES', None, None)
db.session.add(per_18)
db.session.commit()

per_19 = Permiso('ADMINISTRACION_PROYECTOS', None, None)
db.session.add(per_19)
db.session.commit()

per_20 = Permiso('ADMINISTRACION_FASES', None, None)
db.session.add(per_20)
db.session.commit()

per_21 = Permiso('ADMINISTRACION_PERMISOS', None, None)
db.session.add(per_21)
db.session.commit()

per_22 = Permiso('CREAR_PROYECTO', None, None)
db.session.add(per_22)
db.session.commit()


per_23 = Permiso('MODIFICAR', None, ent1)
db.session.add(per_23)
db.session.commit()


per_24 = Permiso('ELIMINAR', None, ent1)
db.session.add(per_24)
db.session.commit()


per_25 = Permiso('VER', None, ent1)
db.session.add(per_25)
db.session.commit()

per_26 = Permiso('MODIFICAR', None, ent2)
db.session.add(per_26)
db.session.commit()


per_27 = Permiso('ELIMINAR', None, ent2)
db.session.add(per_27)
db.session.commit()


per_28 = Permiso('VER', None, ent2)
db.session.add(per_28)
db.session.commit()

per_29 = Permiso('VER', None, ent3)
db.session.add(per_29)
db.session.commit()

per_30 = Permiso('MODIFICAR', None, ent3)
db.session.add(per_30)
db.session.commit()

per_31 = Permiso('ELIMINAR', None, ent3)
db.session.add(per_31)
db.session.commit()

per_32 = Permiso('VER', None, ent4)
db.session.add(per_32)
db.session.commit()

per_33 = Permiso('MODIFICAR', None, ent4)
db.session.add(per_33)
db.session.commit()

per_34 = Permiso('ELIMINAR', None, ent4)
db.session.add(per_34)
db.session.commit()

per_35 = Permiso('VER', None, ent7)
db.session.add(per_35)
db.session.commit()

per_36 = Permiso('MODIFICAR', None, ent7)
db.session.add(per_36)
db.session.commit()

per_37 = Permiso('ELIMINAR', None, ent7)
db.session.add(per_37)
db.session.commit()

per_38 = Permiso('VER', None, ent8)
db.session.add(per_38)
db.session.commit()

per_39 = Permiso('MODIFICAR', None, ent8)
db.session.add(per_39)
db.session.commit()

per_40 = Permiso('ELIMINAR', None, ent8)
db.session.add(per_40)
db.session.commit()

per_41 = Permiso('ADMINISTRACION_RELACIONES', None, None)
db.session.add(per_41)
db.session.commit()

per_42 = Permiso('ADMINISTRACION_ATRIBUTOS', None, None)
db.session.add(per_42)
db.session.commit()

per_43 = Permiso('CREAR_ATRIBUTO', None, None)
db.session.add(per_43)
db.session.commit()

per_44 = Permiso('ELIMINAR_ATRIBUTO', None, None)
db.session.add(per_44)
db.session.commit()



per_45 = Permiso('ADMINISTRACION_ITEMS', None, None)
db.session.add(per_45)
db.session.commit()

per_46 = Permiso('ADMINISTRACION_TIPOITEMS', None, None)
db.session.add(per_46)
db.session.commit()

per_47 = Permiso('CREAR_TIPOITEM', None, None)
db.session.add(per_47)
db.session.commit()

per_48 = Permiso('MODIFICAR_TIPOITEM', None, None)
db.session.add(per_48)
db.session.commit()

per_49 = Permiso('ELIMINAR_TIPOITEM', None, None)
db.session.add(per_49)
db.session.commit()

per_50 = Permiso('VER_TIPOITEM', None, None)
db.session.add(per_50)
db.session.commit()

per_51 = Permiso('MODIFICAR_PERMISO', None, None)
db.session.add(per_51)
db.session.commit()

per_52 = Permiso('VER_PERMISO', None, None)
db.session.add(per_52)
db.session.commit()

##################################
# Permisos para probar linea base#
##################################

per_53 = Permiso('ADMINISTRACION_LINEAS_BASE', None, None)
db.session.add(per_53)
db.session.commit()

per_54 = Permiso('VER', None, ent9)
db.session.add(per_54)
db.session.commit()

per_55 = Permiso('MODIFICAR', None, ent9)
db.session.add(per_55)
db.session.commit()

per_56 = Permiso('ELIMINAR', None, ent9)
db.session.add(per_56)
db.session.commit()

per_57 = Permiso('VER', None, ent10)
db.session.add(per_57)
db.session.commit()

per_58 = Permiso('MODIFICAR', None, ent10)
db.session.add(per_58)
db.session.commit()

per_59 = Permiso('ELIMINAR', None, ent10)
db.session.add(per_59)
db.session.commit()

per_60 = Permiso('VER', None, ent11)
db.session.add(per_60)
db.session.commit()

per_61 = Permiso('MODIFICAR', None, ent11)
db.session.add(per_61)
db.session.commit()

per_62 = Permiso('ELIMINAR', None, ent11)
db.session.add(per_62)
db.session.commit()

per_63 = Permiso('VER', None, ent12)
db.session.add(per_63)
db.session.commit()

per_64 = Permiso('MODIFICAR', None, ent12)
db.session.add(per_64)
db.session.commit()

per_65 = Permiso('ELIMINAR', None, ent12)
db.session.add(per_65)
db.session.commit()

per_66 = Permiso('VER', None, ent13)
db.session.add(per_66)
db.session.commit()

per_67 = Permiso('MODIFICAR', None, ent13)
db.session.add(per_67)
db.session.commit()

per_68 = Permiso('ELIMINAR', None, ent13)
db.session.add(per_68)
db.session.commit()

per_69 = Permiso('MODIFICAR_ATRIBUTO', None, None)
db.session.add(per_69)
db.session.commit()

per_70 = Permiso('CONSULTAR_ATRIBUTO', None, None)
db.session.add(per_70)
db.session.commit()

per_71 = Permiso('ADMINISTRACION_SOLICITUDES', None, None)
db.session.add(per_71)
db.session.commit()

per_72 = Permiso('MODIFICAR', None, ent5)
db.session.add(per_72)
db.session.commit()

per_73 = Permiso('VER', None, ent14)
db.session.add(per_73)
db.session.commit()

per_74 = Permiso('MODIFICAR', None, ent14)
db.session.add(per_74)
db.session.commit()


per_75 = Permiso('ELIMINAR', None, ent14)
db.session.add(per_75)
db.session.commit()

per_76 = Permiso('VER', None, ent15)
db.session.add(per_73)
db.session.commit()

per_77 = Permiso('MODIFICAR', None, ent15)
db.session.add(per_74)
db.session.commit()


per_78 = Permiso('ELIMINAR', None, ent15)
db.session.add(per_75)
db.session.commit()

# Permisos para pruebas d epyunit
per_py = Permiso('VER', None, ent_py)
db.session.add(per_py)
db.session.commit()

per_py2 = Permiso('MODIFICAR', None, ent_py)
db.session.add(per_py2)
db.session.commit()

per_py3 = Permiso('ELIMINAR', None, ent_py)
db.session.add(per_py3)
db.session.commit()

per_py4 = Permiso('VER', None, ent_py2)
db.session.add(per_py4)
db.session.commit()

per_py5 = Permiso('MODIFICAR', None, ent_py2)
db.session.add(per_py5)
db.session.commit()

per_py6 = Permiso('ELIMINAR', None, ent_py2)
db.session.add(per_py6)
db.session.commit()

per_py7 = Permiso('VER', None, ent_py3)
db.session.add(per_py7)
db.session.commit()

per_py8 = Permiso('MODIFICAR', None, ent_py3)
db.session.add(per_py8)
db.session.commit()

per_py9 = Permiso('ELIMINAR', None, ent_py3)
db.session.add(per_py9)
db.session.commit()
#===============================================================================
# per_22 = Permiso('MODIFICAR', ent1)
# db.session.add(per_22)
# db.session.commit()
#===============================================================================

######################################
# Creacion de permisos sobre entidades#
######################################
#===============================================================================
# per_11 = Permiso('Permiso_1', ent1)
# db.session.add(per_11)
# db.session.commit()
#   
# per_12 = Permiso('Permiso_2', ent2)
# db.session.add(per_12)
# db.session.commit()
#   
# per_13 = Permiso('Permiso_3', ent3)
# db.session.add(per_13)
# db.session.commit()
#   
# per_14 = Permiso('Permiso_4', ent4)
# db.session.add(per_14)
# db.session.commit()
#===============================================================================


######################################
########## Creacion de roles##########
######################################
#===============================================================================
# Lista1 =[per_14, per_11]
# rol1 = Rol('Rol1','Descripcion1', Lista1)
# db.session.add(rol1)
# db.session.commit()
# 
# Lista2 = [per_13]
# rol2 = Rol('Rol2','Descripcion2', Lista2)
# db.session.add(rol2)
# db.session.commit()
#===============================================================================

Lista1 = [per_26, per_27, per_19, per_20, per_32, per_33, per_34, per_36, per_38, per_39, per_40, per_41 ]
rol1 = Rol('Rol de Proyecto 2', 'Descripcion2', Lista1)
db.session.add(rol1)
db.session.commit()

Lista2 = [per_23, per_19, per_20, per_29, per_30, per_31, per_45, per_71]
rol2 = Rol('Rol de Proyecto 1', 'Descripcion2', Lista2)
db.session.add(rol2)
db.session.commit()
# rol2 = Rol('Rol2','Descripcion2', Lista2)
# db.session.add(rol2)
# db.session.commit()

######################################
### Creacion de roles por defecto#####
######################################

Lista3 = [per_1, per_2, per_3, per_4, per_5, per_6, per_7, per_8, per_9, per_10, per_15, per_16, per_17, per_18, per_19, per_21, per_22, per_42, per_43, per_44, per_51, per_52, per_69, per_70]
rol3 = Rol('Administrador de Sistema', 'Rol por defecto del sistema', Lista3)
db.session.add(rol3)
db.session.commit()

Lista4 = [per_19, per_20, per_38, per_46, per_47, per_48, per_49, per_50, per_72, per_73, per_74, per_75, per_76, per_77, per_78]
rol4 = Rol('Lider Proyecto', 'Rol por defecto del sistema', Lista4)
db.session.add(rol4)
db.session.commit() 

#############################
# Rol para probar linea base#
#############################
Lista5 = [per_53]
rol5 = Rol('Administrador de Linea Base', 'Creacion, eliminacion y consulta', Lista5)
db.session.add(rol5)
db.session.commit() 

Lista6 = [per_54, per_55, per_56, per_57, per_58, per_59, per_60, per_61, per_62, per_63, per_64, per_65, per_66, per_67, per_68, per_45]
rol6 = Rol('Encargado del Proyecto 4', 'Adm. Proyecto 4 y sus fases', Lista6)
db.session.add(rol6)
db.session.commit()

############################
## Rol para pyunit##########
############################

lista_py = [per_19, per_20, per_py, per_py2, per_py3, per_py4, per_py5, per_py6, per_py7, per_py8, per_py9, per_45, per_46, per_71, per_41, per_53]
rol_py = Rol('Rol para prueba de pyunit', 'Adm Proyecto pyunit', lista_py)
db.session.add(rol_py)
db.session.commit()
#===============================================================================
# 
# Lista4 = [per_22]
# rol4 = Rol('Prueba de Seguridad', 'Rol creado para probar permisos', Lista4)
# db.session.add(rol4)
# db.session.commit()
#===============================================================================


######################################
######## Creacion de usuarios ########
######################################
ListaUnica = [rol3]
usu = Usuario('admin', 'admin@admin.com', generate_password_hash('admin'), 'color?', 'azul', 'ACTIVO', ListaUnica)
db.session.add(usu)
db.session.commit()


Lista5 = [rol1, rol4, rol5, rol6]
usu1 = Usuario('usu_1', 'usu_1@usu_1.com', generate_password_hash('usu_1'), 'dia?', 'sabado', 'ACTIVO', Lista5)
db.session.add(usu1)
db.session.commit()

Lista5 = [rol2]
usu2 = Usuario('usu_2', 'usu_2@usu_2.com', generate_password_hash('usu_2'), 'dia?', 'lunes', 'ACTIVO', Lista5)
db.session.add(usu2)
db.session.commit()


Lista5 = [rol2, rol1, rol4]
usu3 = Usuario('usu_3', 'usu_3@usu_3.com', generate_password_hash('usu_3'), 'dia?', 'martes', 'ACTIVO', Lista5)
db.session.add(usu3)
db.session.commit()

Lista5 = [rol2, rol1]
usu4 = Usuario('usu_4', 'usu_4@usu_4.com', generate_password_hash('usu_4'), 'dia?', 'martes', 'ACTIVO', Lista5)
db.session.add(usu3)
db.session.commit()

#################################
# # usuario para prueba de pyunit#
#################################
Lista_py = [rol_py]
usu_py = Usuario('testpy', 'testpy@testpy.com', generate_password_hash('testpy'), 'dia?', 'martes', 'ACTIVO', Lista_py)
db.session.add(usu_py)
db.session.commit()

#################################
# comite de cambio para pyunit###
#################################
miembros = [usu_py]
comite_py = ComiteDeCambio(miembros=miembros, observacion = 'comite pyunit', cantidad_miembros='1')
db.session.add(comite_py)
db.session.commit()

#===============================================================================
# Lista6 = [rol2]
# usu2 = Usuario('prueba', 'prueba@prueba.com', generate_password_hash('prueba'), 'dia?','sabado', 'ACTIVO', Lista6)
# db.session.add(usu2)
# db.session.commit()
# 
# Lista7 = [rol1, rol2]
# usu3 = Usuario('aux', 'aux@aux.com', generate_password_hash('aux'), 'estacion?', 'verano','ACTIVO', Lista7)
# db.session.add(usu3)
# db.session.commit()
#===============================================================================

######################################
######## Creacion de proyectos #######
######################################
Lista = [usu2, usu3]
proyecto1 = Proyecto(nombre='Proyecto 1', estado='Activo', lider=usu1, entidad=ent1, miembros=Lista)
db.session.add(proyecto1)
db.session.commit()

Lista = [usu1, usu3]
proyecto2 = Proyecto(nombre='Proyecto 2', estado='Activo', lider=usu1 , entidad=ent2, miembros=Lista)
db.session.add(proyecto2)
db.session.commit()

Lista = [usu1, usu2, usu3]
proyecto3 = Proyecto(nombre='Proyecto 3', estado='Pendiente', lider=usu3, entidad=ent5, miembros=Lista)
db.session.add(proyecto3)
db.session.commit()

#################################
# Proyecto para probar linea base#
#################################
Lista = [usu1, usu2, usu3, usu4]
proyecto4 = Proyecto(nombre='Proyecto 4', estado='Activo', lider=usu1, entidad=ent9, miembros=Lista)
db.session.add(proyecto4)
db.session.commit()

###########################
# Proyecto para pyunit#####
###########################
Lista = [usu_py]
proyecto_py = Proyecto(nombre='Proyecto pyunit', estado='Pendiente', lider=usu_py, entidad=ent_py, miembros=Lista)
db.session.add(proyecto_py)
db.session.commit()

# proyecto3 = Proyecto('Proyecto3', 'Pendiente', 54, 80,miembros=[])
# db.session.add(proyecto3)
# db.session.commit()


#######################################
# Creacion de atributos
#######################################

atributo_1 = Atributo(nombre='Otro', tipo='String')
db.session.add(atributo_1)
db.session.commit()

atributo_2 = Atributo(nombre='Prueba', tipo='Integer')
db.session.add(atributo_2)
db.session.commit()

#######################################
# Creacion de fases
#######################################

fase1 = Fase(nombre='Fase 1', estado='Activa', posicion='1', proyecto=proyecto1, entidad=ent3)
db.session.add(fase1)
db.session.commit()

fase2 = Fase(nombre='Fase 1', estado='Activa', posicion='1', proyecto=proyecto2, entidad=ent4)
db.session.add(fase2)
db.session.commit()


fase3 = Fase(nombre='Fase 2', estado='Activa', posicion='2', proyecto=proyecto2, entidad=ent7)
db.session.add(fase3)
db.session.commit()


fase4 = Fase(nombre='Fase 3', estado='Pendiente', posicion='3', proyecto=proyecto2, entidad=ent8)
db.session.add(fase4)
db.session.commit()



######################################
#####Creacion de tipo de items #######
######################################

Lista = [atributo_1, atributo_2]
tipoI_1 = TipoItem(nombre='TipoItem_1', atributos=Lista, proyecto=proyecto1, fase=fase1)
db.session.add(tipoI_1)
db.session.commit()

Lista = [atributo_1]
tipoI_2 = TipoItem(nombre='TipoItem_1', atributos=Lista, proyecto=proyecto2, fase=fase2)
db.session.add(tipoI_2)
db.session.commit()

Lista = [atributo_2]
tipoI_3 = TipoItem(nombre='TipoItem_2', atributos=Lista, proyecto=proyecto2, fase=fase2)
db.session.add(tipoI_3)
db.session.commit()

Lista = [atributo_2]
tipoI_4 = TipoItem(nombre='TipoItem_3', atributos=Lista, proyecto=proyecto2, fase=fase3)
db.session.add(tipoI_4)
db.session.commit()


###############################
# Fases para probar linea base#
###############################

fase5 = Fase(nombre='Fase 1', estado='Activa', posicion='1', proyecto=proyecto4, entidad=ent10)
db.session.add(fase5)
db.session.commit()

Lista = [atributo_2]
tipoI_5 = TipoItem(nombre='TipoItem_5', atributos=Lista, proyecto=proyecto4, fase=fase5)
db.session.add(tipoI_5)
db.session.commit()


fase6 = Fase(nombre='Fase 2', estado='Activa', posicion='2', proyecto=proyecto4, entidad=ent11)
db.session.add(fase6)
db.session.commit()

Lista = [atributo_2]
tipoI_6 = TipoItem(nombre='TipoItem_6', atributos=Lista, proyecto=proyecto4, fase=fase6)
db.session.add(tipoI_6)
db.session.commit()

fase7 = Fase(nombre='Fase 3', estado='Activa', posicion='3', proyecto=proyecto4, entidad=ent12)
db.session.add(fase7)
db.session.commit()

Lista = [atributo_2]
tipoI_7 = TipoItem(nombre='TipoItem_7', atributos=Lista, proyecto=proyecto4, fase=fase7)
db.session.add(tipoI_7)
db.session.commit()

fase8 = Fase(nombre='Fase 4', estado='Activa', posicion='4', proyecto=proyecto4, entidad=ent13)
db.session.add(fase8)
db.session.commit()

Lista = [atributo_2]
tipoI_8 = TipoItem(nombre='TipoItem_8', atributos=Lista, proyecto=proyecto4, fase=fase8)
db.session.add(tipoI_8)
db.session.commit()

fase9 = Fase(nombre='Fase 1', estado='Pendiente', posicion='1', proyecto=proyecto3, entidad=ent14)
db.session.add(fase9)
db.session.commit()

Lista = [atributo_1, atributo_2]
tipoI_9 = TipoItem(nombre='TipoItem_9', atributos=Lista, proyecto=proyecto3, fase=fase9)
db.session.add(tipoI_9)
db.session.commit()

fase10 = Fase(nombre='Fase 2', estado='Pendiente', posicion='2', proyecto=proyecto3, entidad=ent15)
db.session.add(fase10)
db.session.commit()

#####################
# Fase para pyunit###
#####################
fase_py = Fase(nombre='Fase 1', estado='Pendiente', posicion='1', proyecto=proyecto_py, entidad=ent_py2)
db.session.add(fase_py)
db.session.commit()

Lista = [atributo_1, atributo_2]
tipoI_py = TipoItem(nombre='TipoItem_py1', atributos=Lista, proyecto=proyecto_py, fase=fase_py)
db.session.add(tipoI_py)
db.session.commit()

fase_py2 = Fase(nombre='Fase 2', estado='Pendiente', posicion='1', proyecto=proyecto_py, entidad=ent_py3)
db.session.add(fase_py2)
db.session.commit()

Lista = [atributo_1]
tipoI_py2 = TipoItem(nombre='TipoItem_py2', atributos=Lista, proyecto=proyecto_py, fase=fase_py2)
db.session.add(tipoI_py2)
db.session.commit()

#######################################
# Creacion de lineas base
#######################################
lb1 = LineaBase(nombre='LineaBase1', fase=fase2, estado='Abierta')
db.session.add(lb1)
db.session.commit()

h1 = HistorialLineaBase(id_lb=lb1.id, operacion='Creacion', usuario='Por defecto', fecha=date.today())
db.session.add(h1)
db.session.commit()

lb2 = LineaBase(nombre='LineaBase1', fase=fase5, estado='Abierta')
db.session.add(lb2)
db.session.commit()

h2 = HistorialLineaBase(id_lb=lb2.id, operacion='Creacion', usuario='Por defecto', fecha=date.today())
db.session.add(h2)
db.session.commit()

lb3 = LineaBase(nombre='LineaBase2', fase=fase6, estado='Abierta')
db.session.add(lb3)
db.session.commit()

h3 = HistorialLineaBase(id_lb=lb3.id, operacion='Creacion', usuario='Por defecto', fecha=date.today())
db.session.add(h3)
db.session.commit()

lb4 = LineaBase(nombre='LineaBase3', fase=fase7, estado='Abierta')
db.session.add(lb4)
db.session.commit()

h4 = HistorialLineaBase(id_lb=lb4.id, operacion='Creacion', usuario='Por defecto', fecha=date.today())
db.session.add(h4)
db.session.commit()

#############################
# Linea base para pyunit#####
#############################
lb_py = LineaBase(nombre='LineaBase pyunit', fase=fase_py2, estado='Abierta')
db.session.add(lb_py)
db.session.commit()

h_py = HistorialLineaBase(id_lb=lb_py.id, operacion='Creacion', usuario='Por defecto', fecha=date.today())
db.session.add(h_py)
db.session.commit()

#######################################
# Creacion de items
#######################################

item1 = Item(nombre='Item 1', fase=fase1, estado='Activo', version='1', tipo=tipoI_1)
db.session.add(item1)
db.session.commit()

item2 = Item(nombre='Item 2', estado='Bloqueado', fase=fase2, linea_base=lb1, version='1')
db.session.add(item2)
db.session.commit()

item3 = Item(nombre='Item 3', fase=fase3, estado='Activo', version='1', tipo=tipoI_4)
db.session.add(item3)
db.session.commit()

item4 = Item(nombre='Item 4', fase=fase1, estado='Activo', version='1', tipo=tipoI_1)
db.session.add(item4)
db.session.commit()

item5 = Item(nombre='Item 5', estado='Bloqueado' , fase=fase2, linea_base=lb1, version='1')
db.session.add(item5)
db.session.commit()

item6 = Item(nombre='Item 6', fase=fase3, estado='Activo', version='1', tipo=tipoI_4)
db.session.add(item6)
db.session.commit()

item13 = Item(nombre='Item 13', fase=fase1, estado='Bloqueado', version='1', complejidad='mucha', duracion='7 anhos', prioridad='Baja', observacion='item de prueba', fecha_creacion=date.today(), tipo=tipoI_1 , costo=444, descripcion='descripcion del item')
db.session.add(item13)
db.session.commit()

item13 = Item(nombre='Item 14', fase=fase1, estado='Bloqueado', version='1', complejidad='mucha', duracion='7 anhos', prioridad='Baja', observacion='item de prueba', fecha_creacion=date.today(), tipo=tipoI_5 , costo=444, descripcion='descripcion del item 14')
db.session.add(item13)
db.session.commit()


item13 = Item(nombre='Item 15', fase=fase1, estado='Activo', version='1', complejidad='mucha', duracion='7 anhos', prioridad='Baja', observacion='item de prueba', fecha_creacion=date.today(), tipo=tipoI_1 , costo=444, descripcion='descripcion del item 14')
db.session.add(item13)
db.session.commit()

atributoItem_1 = AtributoItem(item13.id, atributo_1.id, version='1', valor='atributo prueba 1')
db.session.add(atributoItem_1)
db.session.commit()

atributoItem_2 = AtributoItem(item13.id, atributo_2.id, version='1', valor='atributo prueba 2')
db.session.add(atributoItem_2)
db.session.commit()

atributoItem_3 = AtributoItem(item1.id, atributo_1.id, version='1', valor='atributo prueba 1')
db.session.add(atributoItem_1)
db.session.commit()

atributoItem_4 = AtributoItem(item4.id, atributo_2.id, version='1', valor='atributo prueba 2')
db.session.add(atributoItem_2)
db.session.commit()

################################
# # items para probar linea base#
################################
item7 = Item(nombre='Item 7', fase=fase8, estado='Aprobado', version='1')
db.session.add(item7)
db.session.commit()

item8 = Item(nombre='Item 8', fase=fase8, estado='Aprobado', version='1')
db.session.add(item8)
db.session.commit()

item9 = Item(nombre='Item 9', fase=fase8, estado='Aprobado', version='1')
db.session.add(item9)
db.session.commit()

item10 = Item(nombre='Item 10', fase=fase5, estado='Bloqueado', linea_base=lb2, version='1')
db.session.add(item10)
db.session.commit()

item11 = Item(nombre='Item 11', fase=fase6, estado='Bloqueado', linea_base=lb3, version='1', antecesor_id=item10.id)
db.session.add(item11)
db.session.commit()

item12 = Item(nombre='Item 12', fase=fase7, estado='Bloqueado', linea_base=lb4, version='1', antecesor_id=item11.id)
db.session.add(item12)
db.session.commit()


solCam1 = SolicitudCambio('monton!', 555555, 'VOTACION', 'la primera solicitud de cambio', [], None)
db.session.add(solCam1)
db.session.commit()

solCam2 = SolicitudCambio('poco', 111, 'VOTACION', 'la segunda solicitud de cambio', [], None)
db.session.add(solCam2)
db.session.commit()

###########################
# Items para pyunit########
###########################

atributo_py = Atributo(nombre='Atributo py', tipo='String')
db.session.add(atributo_py)
db.session.commit()

atributos_lista = [atributo_py]
tipo_py = TipoItem(nombre='Tipo Item pyunit', atributos=atributos_lista, proyecto=proyecto_py, fase=fase_py2)
db.session.add(tipo_py)
db.session.commit()

item_py = Item(nombre='Item pyunit', fase=fase_py2, estado='Activo', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de pyunit', fecha_creacion=date.today(), tipo=tipo_py , costo=1000 , descripcion='descripcion del item 101')
db.session.add(item_py)
db.session.commit()

atributoItem_py = AtributoItem(item_py.id, atributo_py.id, version='1', valor='atributo prueba 1')
db.session.add(atributoItem_py)
db.session.commit()

item_py2 = Item(nombre='Item pyunit 2', fase=fase_py2, estado='Bloqueado', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de pyunit', fecha_creacion=date.today(), tipo=tipo_py , costo=1000 , descripcion='descripcion del item 101', linea_base=lb_py)
db.session.add(item_py2)
db.session.commit()

atributoItem_py = AtributoItem(item_py2.id, atributo_py.id, version='1', valor='atributo prueba 1')
db.session.add(atributoItem_py)
db.session.commit()
#===============================================================================
# seccion Ana
#===============================================================================

ent_p1 = Entidad('Proyecto Uno')
db.session.add(ent_p1)
db.session.commit()

ent_p1_f1 = Entidad('Fase Uno Proyecto Uno')
db.session.add(ent_p1_f1)
db.session.commit()

ent_p1_f2 = Entidad('Fase Dos Proyecto Uno')
db.session.add(ent_p1_f2)
db.session.commit()

ent_p1_f3 = Entidad('Fase Tres Proyecto Uno')
db.session.add(ent_p1_f3)
db.session.commit()


per_100 = Permiso('MODIFICAR', None, ent_p1)
db.session.add(per_100)
db.session.commit()

per_101 = Permiso('MODIFICAR', None, ent_p1_f1)
db.session.add(per_101)
db.session.commit()

per_102 = Permiso('MODIFICAR', None, ent_p1_f2)
db.session.add(per_102)
db.session.commit()

per_103 = Permiso('MODIFICAR', None, ent_p1_f3)
db.session.add(per_103)
db.session.commit()

per_104 = Permiso('VER', None, ent_p1_f1)
db.session.add(per_104)
db.session.commit()

per_105 = Permiso('VER', None, ent_p1_f2)
db.session.add(per_105)
db.session.commit()

per_106 = Permiso('VER', None, ent_p1_f3)
db.session.add(per_106)
db.session.commit()



lista_permisos = [ per_19, per_20,per_42, per_43, per_44, per_45,   per_53, per_69, per_71, per_70, per_100, per_101, per_102, per_103, per_104, per_105, per_106]
rol_101 = Rol('Rol Proyecto Uno', 'Permisos basicos de todos los miembros', lista_permisos)
db.session.add(rol_101)
db.session.commit()


roles_lista = [rol_101, rol4]
usu101 = Usuario('Ana', 'ana@ana.com', generate_password_hash('ana'), 'dia?', 'lunes', 'ACTIVO', roles_lista)
db.session.add(usu101)
db.session.commit()

roles_lista = [rol_101]
usu102 = Usuario('Mirta', 'mita@mirta.com', generate_password_hash('mirta'), 'dia?', 'martes', 'ACTIVO', roles_lista)
db.session.add(usu102)
db.session.commit()


roles_lista = [rol_101]
usu103 = Usuario('Monse', 'monse@monse.com', generate_password_hash('monse'), 'dia?', 'miercoles', 'ACTIVO', roles_lista)
db.session.add(usu103)
db.session.commit()

roles_lista = [rol_101]
usu104 = Usuario('Creador', 'Creador@Creador.com', generate_password_hash('creador'), 'dia?', 'jueves', 'ACTIVO', roles_lista)
db.session.add(usu104)
db.session.commit()



miembros_lista = [usu101, usu102, usu103]
comite_100 = ComiteDeCambio(observacion='Comite 100', miembros=miembros_lista, cantidad_miembros=3)
db.session.add(comite_100)
db.session.commit()

miembros = [usu101, usu102, usu103, usu104]
proyecto_100 = Proyecto(nombre='Proyecto Uno', estado='Activo', lider=usu101, entidad=ent_p1, miembros=miembros, comite=comite_100)
db.session.add(proyecto_100)
db.session.commit()

fase_101 = Fase(nombre='Fase Uno', estado='Activa', posicion='1', proyecto=proyecto_100, entidad=ent_p1_f1)
db.session.add(fase_101)
db.session.commit()

fase_102 = Fase(nombre='Fase Dos', estado='Activa', posicion='2', proyecto=proyecto_100, entidad=ent_p1_f2)
db.session.add(fase_102)
db.session.commit()

fase_103 = Fase(nombre='Fase Tres', estado='Activa', posicion='3', proyecto=proyecto_100, entidad=ent_p1_f3)
db.session.add(fase_103)
db.session.commit()


atributo_101 = Atributo(nombre='Atributo 1', tipo='String')
db.session.add(atributo_101)
db.session.commit()

atributo_102 = Atributo(nombre='Atributo 2', tipo='Integer')
db.session.add(atributo_102)
db.session.commit()

atributo_103 = Atributo(nombre='Atributo 3', tipo='String')
db.session.add(atributo_103)
db.session.commit()

atributo_104 = Atributo(nombre='Atributo 4', tipo='String')
db.session.add(atributo_104)
db.session.commit()

atributos_lista = [atributo_101, atributo_102]
tipo_101 = TipoItem(nombre='Tipo Item 101', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_101)
db.session.add(tipo_101)
db.session.commit()

atributos_lista = [atributo_102, atributo_103]
tipo_102 = TipoItem(nombre='Tipo Item 102', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_102)
db.session.add(tipo_102)
db.session.commit()

atributos_lista = [atributo_103, atributo_104]
tipo_103 = TipoItem(nombre='Tipo Item 103', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_103)
db.session.add(tipo_103)
db.session.commit()

atributos_lista = [atributo_101, atributo_104]
tipo_104 = TipoItem(nombre='Tipo Item 104', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_101)
db.session.add(tipo_104)
db.session.commit()

atributos_lista = [atributo_102, atributo_104]
tipo_105 = TipoItem(nombre='Tipo Item 105', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_102)
db.session.add(tipo_105)
db.session.commit()

atributos_lista = [atributo_101, atributo_103]
tipo_106 = TipoItem(nombre='Tipo Item 106', atributos=atributos_lista, proyecto=proyecto_100, fase=fase_103)
db.session.add(tipo_106)
db.session.commit()





lb_101 = LineaBase(nombre='Linea Base 1', fase=fase_101, estado='Abierta')
db.session.add(lb_101)
db.session.commit()

lb_102 = LineaBase(nombre='Linea Base 2', fase=fase_102, estado='Abierta')
db.session.add(lb_102)
db.session.commit()

lb_103 = LineaBase(nombre='Linea Base 3', fase=fase_103, estado='Abierta')
db.session.add(lb_103)
db.session.commit()


item_101 = Item(nombre='Item Uno', fase=fase_101, estado='Bloqueado', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de prueba 1', fecha_creacion=date.today(), tipo=tipo_101 , costo=1000 , descripcion='descripcion del item 101', linea_base=lb_101)
db.session.add(item_101)
db.session.commit()

atributoItem_101 = AtributoItem(item_101.id, atributo_101.id, version='1', valor='atributo prueba 1')
db.session.add(atributoItem_101)
db.session.commit()

atributoItem_102 = AtributoItem(item_101.id, atributo_102.id, version='1', valor='atributo prueba 2')
db.session.add(atributoItem_102)
db.session.commit()

item_102 = Item(nombre='Item Dos', fase=fase_101, estado='Bloqueado', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de prueba 1', fecha_creacion=date.today(), tipo=tipo_104 , costo=2000 , descripcion='descripcion del item 102', linea_base=lb_101)
db.session.add(item_102)
db.session.commit()

atributoItem_103 = AtributoItem(item_102.id, atributo_101.id, version='1', valor='atributo prueba 3')
db.session.add(atributoItem_103)
db.session.commit()

atributoItem_104 = AtributoItem(item_102.id, atributo_104.id, version='1', valor='atributo prueba 4')
db.session.add(atributoItem_104)
db.session.commit()


item_103 = Item(nombre='Item Tres', fase=fase_102, estado='Bloqueado', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de prueba 1', fecha_creacion=date.today(), tipo=tipo_102 , costo=3000 , descripcion='descripcion del item 103', linea_base=lb_102, antecesor_id=item_102.id)
db.session.add(item_103)
db.session.commit()

atributoItem_105 = AtributoItem(item_103.id, atributo_102.id, version='1', valor='atributo prueba 5')
db.session.add(atributoItem_105)
db.session.commit()

atributoItem_106 = AtributoItem(item_103.id, atributo_103.id, version='1', valor='atributo prueba 6')
db.session.add(atributoItem_106)
db.session.commit()

item_104 = Item(nombre='Item Cuatro', fase=fase_103, estado='Bloqueado', version='1', complejidad='mucha', duracion='1 anho', prioridad='Baja', observacion='item de prueba 1', fecha_creacion=date.today(), tipo=tipo_103 , costo=4000 , descripcion='descripcion del item 104', linea_base=lb_103, antecesor_id=item_103.id)
db.session.add(item_104)
db.session.commit()

atributoItem_107 = AtributoItem(item_104.id, atributo_103.id, version='1', valor='atributo prueba 5')
db.session.add(atributoItem_107)
db.session.commit()

atributoItem_108 = AtributoItem(item_104.id, atributo_104.id, version='1', valor='atributo prueba 6')
db.session.add(atributoItem_108)
db.session.commit()


items_cambio = [item_101, item_104]
solCam_100 = SolicitudCambio(impacto_total='', costo_total=0, estado='Activa', observacion='Solicitud 100', items=items_cambio, creador=usu104, proyecto=proyecto_100)
db.session.add(solCam_100)
db.session.commit()



print "Datos cargados"
